package algorithm.niuke;

import java.util.Stack;

/**
 * 使用栈实现队列
 * 思路：push的时候正常入一个栈即可，pop的时候借助栈的特性（先进后出）两个先进后出可以当作队列（先进先出）
 *
 * @author jack.wu
 * @version 1.0
 * @date 2020-05-08
 */
public class StackImplQueue {

    Stack<Integer> stack1 = new Stack<>();
    Stack<Integer> stack2 = new Stack<>();

    public void push(int node) {
        stack1.push(node);
    }

    public int pop() {

        if (stack1.isEmpty() && stack2.isEmpty()){
            throw new RuntimeException("Queue is Empty");
        }

        // 关键 利用栈的特性
        if (stack2.isEmpty()){
            while (!stack1.isEmpty()){
                stack2.push(stack1.pop());
            }
        }
        return stack2.pop();
    }

    public static void main(String[] args) {

    }


}
